<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.11"/>
<title>Kinetis Bootloader Host: blfwk::BusPal Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
  $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
  $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectlogo"><img alt="Logo" src="nxp_logo_small.png"/></td>
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">Kinetis Bootloader Host
   &#160;<span id="projectnumber">2.0.0</span>
   </div>
   <div id="projectbrief">Host Tools for Kinetis devices</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.11 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Introduction</span></a></li>
      <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
      <li><a href="modules.html"><span>Modules</span></a></li>
      <li>
        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
      </li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
      <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
      <li><a href="inherits.html"><span>Class&#160;Hierarchy</span></a></li>
      <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
    </ul>
  </div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('classblfwk_1_1_bus_pal.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#pub-types">Public Types</a> &#124;
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pub-static-methods">Static Public Member Functions</a> &#124;
<a href="#pub-static-attribs">Static Public Attributes</a> &#124;
<a href="#pro-types">Protected Types</a> &#124;
<a href="#pro-methods">Protected Member Functions</a> &#124;
<a href="#pro-attribs">Protected Attributes</a> &#124;
<a href="classblfwk_1_1_bus_pal-members.html">List of all members</a>  </div>
  <div class="headertitle">
<div class="title">blfwk::BusPal Class Reference</div>  </div>
</div><!--header-->
<div class="contents">

<p>Interface with the <a class="el" href="classblfwk_1_1_bus_pal.html" title="Interface with the BusPal. ">BusPal</a>.  
 <a href="classblfwk_1_1_bus_pal.html#details">More...</a></p>

<p><code>#include &lt;<a class="el" href="_bus_pal_8h_source.html">BusPal.h</a>&gt;</code></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Classes</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structblfwk_1_1_bus_pal_1_1_bus_pal_config_data.html">BusPalConfigData</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classblfwk_1_1_bus_pal.html" title="Interface with the BusPal. ">BusPal</a> configuration data.  <a href="structblfwk_1_1_bus_pal_1_1_bus_pal_config_data.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
Public Types</h2></td></tr>
<tr class="memitem:aa43dd896e2acb8e1955f3b13334c6b45"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom">{ <br />
&#160;&#160;<a class="el" href="classblfwk_1_1_bus_pal.html#aa43dd896e2acb8e1955f3b13334c6b45af7002ed146a52ee5ebfb5cbbdffd810b">kResetCount</a> = 20, 
<br />
&#160;&#160;<a class="el" href="classblfwk_1_1_bus_pal.html#aa43dd896e2acb8e1955f3b13334c6b45a66c5e62ec092e5eae464bab66c33f0b9">kResponseOk</a> = 0x01, 
<br />
&#160;&#160;<a class="el" href="classblfwk_1_1_bus_pal.html#aa43dd896e2acb8e1955f3b13334c6b45aa61cccf9220c6dcb0f9de8e3423d5410">kBulkTransferMax</a> = 4096, 
<br />
&#160;&#160;<a class="el" href="classblfwk_1_1_bus_pal.html#aa43dd896e2acb8e1955f3b13334c6b45a8c37ceeae90736301eb2e08999e4673a">kMaxResponse</a> = kBulkTransferMax
<br />
 }<tr class="memdesc:aa43dd896e2acb8e1955f3b13334c6b45"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constants.  <a href="classblfwk_1_1_bus_pal.html#aa43dd896e2acb8e1955f3b13334c6b45">More...</a><br /></td></tr>
</td></tr>
<tr class="separator:aa43dd896e2acb8e1955f3b13334c6b45"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3ba8034cd0227c15d1511f486f90d829"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3ba8034cd0227c15d1511f486f90d829"></a>enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classblfwk_1_1_bus_pal.html#a3ba8034cd0227c15d1511f486f90d829">bus_pal_function_t</a> { <br />
&#160;&#160;<b>kBusPalFunction_None</b>, 
<br />
&#160;&#160;<b>kBusPalFunction_SPI</b>, 
<br />
&#160;&#160;<b>kBusPalFunction_I2C</b>, 
<br />
&#160;&#160;<b>kBusPalFunction_CAN</b>, 
<br />
&#160;&#160;<b>kBusPalFunction_GPIO_CONFIG</b>, 
<br />
&#160;&#160;<b>kBusPalFunction_GPIO_SET</b>, 
<br />
&#160;&#160;<b>kBusPalFunction_FPGA_CLOCK_SET</b>
<br />
 }<tr class="memdesc:a3ba8034cd0227c15d1511f486f90d829"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classblfwk_1_1_bus_pal.html" title="Interface with the BusPal. ">BusPal</a> Transports. <br /></td></tr>
</td></tr>
<tr class="separator:a3ba8034cd0227c15d1511f486f90d829"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a032b21d6ebbd41de467492fb047bfff8"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classblfwk_1_1_bus_pal.html#a032b21d6ebbd41de467492fb047bfff8">spi_clock_polarity_t</a> { <br />
&#160;&#160;<a class="el" href="classblfwk_1_1_bus_pal.html#a032b21d6ebbd41de467492fb047bfff8a3965e27705bde19475884d0dfdfc8c3b">kSpiClockPolarity_ActiveHigh</a> = 0, 
<br />
&#160;&#160;<a class="el" href="classblfwk_1_1_bus_pal.html#a032b21d6ebbd41de467492fb047bfff8afc3d627662c90410e8b701172650c227">kSpiClockPolarity_ActiveLow</a> = 1
<br />
 }<tr class="memdesc:a032b21d6ebbd41de467492fb047bfff8"><td class="mdescLeft">&#160;</td><td class="mdescRight">SPI clock polarity configuration.  <a href="classblfwk_1_1_bus_pal.html#a032b21d6ebbd41de467492fb047bfff8">More...</a><br /></td></tr>
</td></tr>
<tr class="separator:a032b21d6ebbd41de467492fb047bfff8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae0fcbb292f846c40a93219e55d92bc6c"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classblfwk_1_1_bus_pal.html#ae0fcbb292f846c40a93219e55d92bc6c">spi_clock_phase_t</a> { <br />
&#160;&#160;<a class="el" href="classblfwk_1_1_bus_pal.html#ae0fcbb292f846c40a93219e55d92bc6cae26a39b485af1153f783d34913959713">kSpiClockPhase_FirstEdge</a>, 
<br />
&#160;&#160;<a class="el" href="classblfwk_1_1_bus_pal.html#ae0fcbb292f846c40a93219e55d92bc6ca1dc5dce9b6cddaa8bbf040e3c27d3da0">kSpiClockPhase_SecondEdge</a>
<br />
 }<tr class="memdesc:ae0fcbb292f846c40a93219e55d92bc6c"><td class="mdescLeft">&#160;</td><td class="mdescRight">SPI clock phase configuration.  <a href="classblfwk_1_1_bus_pal.html#ae0fcbb292f846c40a93219e55d92bc6c">More...</a><br /></td></tr>
</td></tr>
<tr class="separator:ae0fcbb292f846c40a93219e55d92bc6c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a87f2962a35c81c8676f9138f2135ebc5"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classblfwk_1_1_bus_pal.html#a87f2962a35c81c8676f9138f2135ebc5">spi_shift_direction_t</a> { <br />
&#160;&#160;<a class="el" href="classblfwk_1_1_bus_pal.html#a87f2962a35c81c8676f9138f2135ebc5a0c5f1ef4ac5e33e58596c158a4b0f849">kSpiMsbFirst</a> = 0, 
<br />
&#160;&#160;<a class="el" href="classblfwk_1_1_bus_pal.html#a87f2962a35c81c8676f9138f2135ebc5aaea748b5335c4c043431163582f24876">kSpiLsbFirst</a> = 1
<br />
 }<tr class="memdesc:a87f2962a35c81c8676f9138f2135ebc5"><td class="mdescLeft">&#160;</td><td class="mdescRight">SPI data shifter direction options.  <a href="classblfwk_1_1_bus_pal.html#a87f2962a35c81c8676f9138f2135ebc5">More...</a><br /></td></tr>
</td></tr>
<tr class="separator:a87f2962a35c81c8676f9138f2135ebc5"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:acc29b1bf0f1ec2f4dad7d31a5aa6e2cf"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acc29b1bf0f1ec2f4dad7d31a5aa6e2cf"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classblfwk_1_1_bus_pal.html#acc29b1bf0f1ec2f4dad7d31a5aa6e2cf">BusPal</a> (int fileDescriptor)</td></tr>
<tr class="memdesc:acc29b1bf0f1ec2f4dad7d31a5aa6e2cf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor. <br /></td></tr>
<tr class="separator:acc29b1bf0f1ec2f4dad7d31a5aa6e2cf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7f336e1c22ddafd37e9db422fbc7ad20"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7f336e1c22ddafd37e9db422fbc7ad20"></a>
virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classblfwk_1_1_bus_pal.html#a7f336e1c22ddafd37e9db422fbc7ad20">~BusPal</a> ()</td></tr>
<tr class="memdesc:a7f336e1c22ddafd37e9db422fbc7ad20"><td class="mdescLeft">&#160;</td><td class="mdescRight">Destructor. <br /></td></tr>
<tr class="separator:a7f336e1c22ddafd37e9db422fbc7ad20"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab3611813cea66a0708c2c2ec95754fe3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab3611813cea66a0708c2c2ec95754fe3"></a>
virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classblfwk_1_1_bus_pal.html#ab3611813cea66a0708c2c2ec95754fe3">reset</a> ()</td></tr>
<tr class="memdesc:ab3611813cea66a0708c2c2ec95754fe3"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classblfwk_1_1_reset.html" title="Represents the bootloader Reset command. ">Reset</a> to bit bang mode from another peripheral mode. <br /></td></tr>
<tr class="separator:ab3611813cea66a0708c2c2ec95754fe3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af98ed5db16a2fba8b9ad8fdfd742c6af"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af98ed5db16a2fba8b9ad8fdfd742c6af"></a>
virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classblfwk_1_1_bus_pal.html#af98ed5db16a2fba8b9ad8fdfd742c6af">resetHardware</a> ()</td></tr>
<tr class="memdesc:af98ed5db16a2fba8b9ad8fdfd742c6af"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classblfwk_1_1_reset.html" title="Represents the bootloader Reset command. ">Reset</a> the bus pal, comes up in terminal mode. <br /></td></tr>
<tr class="separator:af98ed5db16a2fba8b9ad8fdfd742c6af"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1b64499874571024bf75d9bfececc04a"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classblfwk_1_1_bus_pal.html#a1b64499874571024bf75d9bfececc04a">enterBitBangMode</a> ()</td></tr>
<tr class="memdesc:a1b64499874571024bf75d9bfececc04a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enter bit bang (binary scripting) mode.  <a href="#a1b64499874571024bf75d9bfececc04a">More...</a><br /></td></tr>
<tr class="separator:a1b64499874571024bf75d9bfececc04a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a77e8a1884ea5a1f40e7565c505663f6f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a77e8a1884ea5a1f40e7565c505663f6f"></a>
virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classblfwk_1_1_bus_pal.html#a77e8a1884ea5a1f40e7565c505663f6f">enterSpiMode</a> ()</td></tr>
<tr class="memdesc:a77e8a1884ea5a1f40e7565c505663f6f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enter Spi mode. <br /></td></tr>
<tr class="separator:a77e8a1884ea5a1f40e7565c505663f6f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a97290c3aa76881c095740a9f57e2bc9d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a97290c3aa76881c095740a9f57e2bc9d"></a>
virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classblfwk_1_1_bus_pal.html#a97290c3aa76881c095740a9f57e2bc9d">enterCanMode</a> ()</td></tr>
<tr class="memdesc:a97290c3aa76881c095740a9f57e2bc9d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enter Can mode. <br /></td></tr>
<tr class="separator:a97290c3aa76881c095740a9f57e2bc9d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a65b72744f39f8b0a604fe0f4f90fb48a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a65b72744f39f8b0a604fe0f4f90fb48a"></a>
virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classblfwk_1_1_bus_pal.html#a65b72744f39f8b0a604fe0f4f90fb48a">enterI2cMode</a> ()</td></tr>
<tr class="memdesc:a65b72744f39f8b0a604fe0f4f90fb48a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enter I2c mode. <br /></td></tr>
<tr class="separator:a65b72744f39f8b0a604fe0f4f90fb48a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae2fb72eb55255579d3fb099043962000"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae2fb72eb55255579d3fb099043962000"></a>
virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classblfwk_1_1_bus_pal.html#ae2fb72eb55255579d3fb099043962000">enterUartMode</a> ()</td></tr>
<tr class="memdesc:ae2fb72eb55255579d3fb099043962000"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enter Uart mode. Not currently supported for bus pal. <br /></td></tr>
<tr class="separator:ae2fb72eb55255579d3fb099043962000"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af785e675c5b1874f149dc268e145da6f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af785e675c5b1874f149dc268e145da6f"></a>
virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classblfwk_1_1_bus_pal.html#af785e675c5b1874f149dc268e145da6f">enter1WireMode</a> ()</td></tr>
<tr class="memdesc:af785e675c5b1874f149dc268e145da6f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enter 1wire mode. Not currently supported for bus pal. <br /></td></tr>
<tr class="separator:af785e675c5b1874f149dc268e145da6f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7805bdfe780f6c7696416a47afee4026"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7805bdfe780f6c7696416a47afee4026"></a>
virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classblfwk_1_1_bus_pal.html#a7805bdfe780f6c7696416a47afee4026">enterRawWireMode</a> ()</td></tr>
<tr class="memdesc:a7805bdfe780f6c7696416a47afee4026"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enter raw wire mode. Not currently supported for bus pal. <br /></td></tr>
<tr class="separator:a7805bdfe780f6c7696416a47afee4026"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a42ad5824f8dc0c7d5bb6a92501ce8e8f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a42ad5824f8dc0c7d5bb6a92501ce8e8f"></a>
virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classblfwk_1_1_bus_pal.html#a42ad5824f8dc0c7d5bb6a92501ce8e8f">rawConfigurePins</a> (uint8_t port, uint8_t pin, uint8_t muxVal)</td></tr>
<tr class="memdesc:a42ad5824f8dc0c7d5bb6a92501ce8e8f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Raw configure pins. <br /></td></tr>
<tr class="separator:a42ad5824f8dc0c7d5bb6a92501ce8e8f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adece616c56efe2245336920be4b2c502"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adece616c56efe2245336920be4b2c502"></a>
virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classblfwk_1_1_bus_pal.html#adece616c56efe2245336920be4b2c502">rawSetPins</a> (uint8_t port, uint8_t pin, uint8_t level)</td></tr>
<tr class="memdesc:adece616c56efe2245336920be4b2c502"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set GPIO pin. <br /></td></tr>
<tr class="separator:adece616c56efe2245336920be4b2c502"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a716a6395aee5d2b31d5aaf58a2df832d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a716a6395aee5d2b31d5aaf58a2df832d"></a>
virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classblfwk_1_1_bus_pal.html#a716a6395aee5d2b31d5aaf58a2df832d">configurePins</a> (uint8_t config=0)</td></tr>
<tr class="memdesc:a716a6395aee5d2b31d5aaf58a2df832d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Configure pins. <br /></td></tr>
<tr class="separator:a716a6395aee5d2b31d5aaf58a2df832d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acb4fc83f7b372c63df307b356e302b65"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acb4fc83f7b372c63df307b356e302b65"></a>
virtual uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classblfwk_1_1_bus_pal.html#acb4fc83f7b372c63df307b356e302b65">readPins</a> ()</td></tr>
<tr class="memdesc:acb4fc83f7b372c63df307b356e302b65"><td class="mdescLeft">&#160;</td><td class="mdescRight">Read pins. <br /></td></tr>
<tr class="separator:acb4fc83f7b372c63df307b356e302b65"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a23ddaef530ca28ea81f1c3e43c4db8df"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a23ddaef530ca28ea81f1c3e43c4db8df"></a>
virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classblfwk_1_1_bus_pal.html#a23ddaef530ca28ea81f1c3e43c4db8df">setFPGAClock</a> (uint32_t clock)</td></tr>
<tr class="memdesc:a23ddaef530ca28ea81f1c3e43c4db8df"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the FPGA clock, clock is in hertz. <br /></td></tr>
<tr class="separator:a23ddaef530ca28ea81f1c3e43c4db8df"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac63ff4527060d33016032e6caf11726d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac63ff4527060d33016032e6caf11726d"></a>
virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classblfwk_1_1_bus_pal.html#ac63ff4527060d33016032e6caf11726d">setSpiSpeed</a> (unsigned int speed)</td></tr>
<tr class="memdesc:ac63ff4527060d33016032e6caf11726d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set SPI speed. <br /></td></tr>
<tr class="separator:ac63ff4527060d33016032e6caf11726d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a696dd33fc4468d380342f14229b5a141"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a696dd33fc4468d380342f14229b5a141"></a>
virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classblfwk_1_1_bus_pal.html#a696dd33fc4468d380342f14229b5a141">setSpiConfig</a> (<a class="el" href="classblfwk_1_1_bus_pal.html#a032b21d6ebbd41de467492fb047bfff8">spi_clock_polarity_t</a> polarity, <a class="el" href="classblfwk_1_1_bus_pal.html#ae0fcbb292f846c40a93219e55d92bc6c">spi_clock_phase_t</a> phase, <a class="el" href="classblfwk_1_1_bus_pal.html#a87f2962a35c81c8676f9138f2135ebc5">spi_shift_direction_t</a> direction)</td></tr>
<tr class="memdesc:a696dd33fc4468d380342f14229b5a141"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the SPI configuration. <br /></td></tr>
<tr class="separator:a696dd33fc4468d380342f14229b5a141"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae8515cdde9b198bfc76dcb7575ede7ca"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae8515cdde9b198bfc76dcb7575ede7ca"></a>
virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classblfwk_1_1_bus_pal.html#ae8515cdde9b198bfc76dcb7575ede7ca">setI2cAddress</a> (uint8_t address)</td></tr>
<tr class="memdesc:ae8515cdde9b198bfc76dcb7575ede7ca"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set I2c address. <br /></td></tr>
<tr class="separator:ae8515cdde9b198bfc76dcb7575ede7ca"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2d142d0cc80bec5acd26a9dcbbc423f5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2d142d0cc80bec5acd26a9dcbbc423f5"></a>
virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classblfwk_1_1_bus_pal.html#a2d142d0cc80bec5acd26a9dcbbc423f5">setI2cSpeed</a> (uint32_t speed)</td></tr>
<tr class="memdesc:a2d142d0cc80bec5acd26a9dcbbc423f5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set I2c speed. <br /></td></tr>
<tr class="separator:a2d142d0cc80bec5acd26a9dcbbc423f5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad0f5ff03a1c13d2146ac801f6a840085"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad0f5ff03a1c13d2146ac801f6a840085"></a>
virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classblfwk_1_1_bus_pal.html#ad0f5ff03a1c13d2146ac801f6a840085">setCanSpeed</a> (unsigned int speed)</td></tr>
<tr class="memdesc:ad0f5ff03a1c13d2146ac801f6a840085"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set CAN speed. <br /></td></tr>
<tr class="separator:ad0f5ff03a1c13d2146ac801f6a840085"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a694fe5ed76d2845a6674db4014cee059"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a694fe5ed76d2845a6674db4014cee059"></a>
virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classblfwk_1_1_bus_pal.html#a694fe5ed76d2845a6674db4014cee059">setCanTxid</a> (unsigned int txid)</td></tr>
<tr class="memdesc:a694fe5ed76d2845a6674db4014cee059"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set CAN txid. <br /></td></tr>
<tr class="separator:a694fe5ed76d2845a6674db4014cee059"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aaf4ce77db2ac52dc3f701a9d2b256078"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aaf4ce77db2ac52dc3f701a9d2b256078"></a>
virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classblfwk_1_1_bus_pal.html#aaf4ce77db2ac52dc3f701a9d2b256078">setCanRxid</a> (unsigned int rxid)</td></tr>
<tr class="memdesc:aaf4ce77db2ac52dc3f701a9d2b256078"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set CAN rxid. <br /></td></tr>
<tr class="separator:aaf4ce77db2ac52dc3f701a9d2b256078"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adaf957021ced27d998b8c579e7e6de00"><td class="memItemLeft" align="right" valign="top">virtual uint8_t *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classblfwk_1_1_bus_pal.html#adaf957021ced27d998b8c579e7e6de00">response</a> (size_t byteCount=1)</td></tr>
<tr class="memdesc:adaf957021ced27d998b8c579e7e6de00"><td class="mdescLeft">&#160;</td><td class="mdescRight">Read response.  <a href="#adaf957021ced27d998b8c579e7e6de00">More...</a><br /></td></tr>
<tr class="separator:adaf957021ced27d998b8c579e7e6de00"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac9ec4923d2ed53427c424b633d496bc3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac9ec4923d2ed53427c424b633d496bc3"></a>
virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classblfwk_1_1_bus_pal.html#ac9ec4923d2ed53427c424b633d496bc3">write</a> (const uint8_t *data, size_t byteCount=1)</td></tr>
<tr class="memdesc:ac9ec4923d2ed53427c424b633d496bc3"><td class="mdescLeft">&#160;</td><td class="mdescRight">writes the data over the previously selected interface <br /></td></tr>
<tr class="separator:ac9ec4923d2ed53427c424b633d496bc3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a44c8f5c1b4f4c73cffb2f11f9795bb79"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a44c8f5c1b4f4c73cffb2f11f9795bb79"></a>
virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classblfwk_1_1_bus_pal.html#a44c8f5c1b4f4c73cffb2f11f9795bb79">read</a> (uint8_t *data, size_t byteCount)</td></tr>
<tr class="memdesc:a44c8f5c1b4f4c73cffb2f11f9795bb79"><td class="mdescLeft">&#160;</td><td class="mdescRight">Read data. <br /></td></tr>
<tr class="separator:a44c8f5c1b4f4c73cffb2f11f9795bb79"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
Static Public Member Functions</h2></td></tr>
<tr class="memitem:a549dfebdd85647a8c5669d0ec662fc96"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a549dfebdd85647a8c5669d0ec662fc96"></a>
static bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classblfwk_1_1_bus_pal.html#a549dfebdd85647a8c5669d0ec662fc96">parse</a> (const string_vector_t &amp;params, <a class="el" href="structblfwk_1_1_bus_pal_1_1_bus_pal_config_data.html">BusPal::BusPalConfigData</a> &amp;config)</td></tr>
<tr class="memdesc:a549dfebdd85647a8c5669d0ec662fc96"><td class="mdescLeft">&#160;</td><td class="mdescRight">parse the passed in options into the config structure. <br /></td></tr>
<tr class="separator:a549dfebdd85647a8c5669d0ec662fc96"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-attribs"></a>
Static Public Attributes</h2></td></tr>
<tr class="memitem:a2ef1166229656afd4aa8ba867c58bf5e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2ef1166229656afd4aa8ba867c58bf5e"></a>
static const uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classblfwk_1_1_bus_pal.html#a2ef1166229656afd4aa8ba867c58bf5e">kBusPalDefaultI2cSlaveAddress</a> = 0x10</td></tr>
<tr class="memdesc:a2ef1166229656afd4aa8ba867c58bf5e"><td class="mdescLeft">&#160;</td><td class="mdescRight">I2C default address. <br /></td></tr>
<tr class="separator:a2ef1166229656afd4aa8ba867c58bf5e"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-types"></a>
Protected Types</h2></td></tr>
<tr class="memitem:a3d349373a77fd832fde6f97077b42547"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3d349373a77fd832fde6f97077b42547"></a>enum &#160;</td><td class="memItemRight" valign="bottom"><b>bus_pal_mode_t</b> { <br />
&#160;&#160;<b>kBusPalModeBitBang</b>, 
<br />
&#160;&#160;<b>kBusPalModeSpi</b>, 
<br />
&#160;&#160;<b>kBusPalModeI2c</b>, 
<br />
&#160;&#160;<b>kBusPalModeCan</b>
<br />
 }</td></tr>
<tr class="separator:a3d349373a77fd832fde6f97077b42547"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
Protected Member Functions</h2></td></tr>
<tr class="memitem:a1237da8820c31097e010db2c30cc7238"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1237da8820c31097e010db2c30cc7238"></a>
virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classblfwk_1_1_bus_pal.html#a1237da8820c31097e010db2c30cc7238">writeCommand</a> (uint8_t commandByte, const char *expectedResponse)</td></tr>
<tr class="memdesc:a1237da8820c31097e010db2c30cc7238"><td class="mdescLeft">&#160;</td><td class="mdescRight">Write command, check string response. <br /></td></tr>
<tr class="separator:a1237da8820c31097e010db2c30cc7238"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7bc44ec3112552f39b2a1f39a8aa547c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7bc44ec3112552f39b2a1f39a8aa547c"></a>
virtual uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classblfwk_1_1_bus_pal.html#a7bc44ec3112552f39b2a1f39a8aa547c">writeCommand</a> (uint8_t commandByte)</td></tr>
<tr class="memdesc:a7bc44ec3112552f39b2a1f39a8aa547c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Write command, return 1 byte response. <br /></td></tr>
<tr class="separator:a7bc44ec3112552f39b2a1f39a8aa547c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2e25eb5096027c059d319e532f90c883"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2e25eb5096027c059d319e532f90c883"></a>
virtual uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classblfwk_1_1_bus_pal.html#a2e25eb5096027c059d319e532f90c883">writeCommand</a> (uint8_t *command, unsigned int length)</td></tr>
<tr class="memdesc:a2e25eb5096027c059d319e532f90c883"><td class="mdescLeft">&#160;</td><td class="mdescRight">write multi-byte command, return 1 byte response. <br /></td></tr>
<tr class="separator:a2e25eb5096027c059d319e532f90c883"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3baeb183bb6acfb757ae5027953bd392"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3baeb183bb6acfb757ae5027953bd392"></a>
virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classblfwk_1_1_bus_pal.html#a3baeb183bb6acfb757ae5027953bd392">writeSpi</a> (const uint8_t *data, size_t byteCount=1)</td></tr>
<tr class="memdesc:a3baeb183bb6acfb757ae5027953bd392"><td class="mdescLeft">&#160;</td><td class="mdescRight">write via Spi <br /></td></tr>
<tr class="separator:a3baeb183bb6acfb757ae5027953bd392"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a006b75b77607d51aa35dfef9e246b6fc"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a006b75b77607d51aa35dfef9e246b6fc"></a>
virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classblfwk_1_1_bus_pal.html#a006b75b77607d51aa35dfef9e246b6fc">writeI2c</a> (const uint8_t *data, size_t byteCount=1)</td></tr>
<tr class="memdesc:a006b75b77607d51aa35dfef9e246b6fc"><td class="mdescLeft">&#160;</td><td class="mdescRight">write via I2c <br /></td></tr>
<tr class="separator:a006b75b77607d51aa35dfef9e246b6fc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0fad8927393a1b94cb8973ec71ab81a5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0fad8927393a1b94cb8973ec71ab81a5"></a>
virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classblfwk_1_1_bus_pal.html#a0fad8927393a1b94cb8973ec71ab81a5">writeCan</a> (const uint8_t *data, size_t byteCount=1)</td></tr>
<tr class="memdesc:a0fad8927393a1b94cb8973ec71ab81a5"><td class="mdescLeft">&#160;</td><td class="mdescRight">write via Can <br /></td></tr>
<tr class="separator:a0fad8927393a1b94cb8973ec71ab81a5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac1f992e2476b29372877c07dbb6e68a9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac1f992e2476b29372877c07dbb6e68a9"></a>
virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classblfwk_1_1_bus_pal.html#ac1f992e2476b29372877c07dbb6e68a9">readSpi</a> (uint8_t *data, size_t byteCount)</td></tr>
<tr class="memdesc:ac1f992e2476b29372877c07dbb6e68a9"><td class="mdescLeft">&#160;</td><td class="mdescRight">read via Spi <br /></td></tr>
<tr class="separator:ac1f992e2476b29372877c07dbb6e68a9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a743674752ab0e01437d0641cc7fcb589"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a743674752ab0e01437d0641cc7fcb589"></a>
virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classblfwk_1_1_bus_pal.html#a743674752ab0e01437d0641cc7fcb589">readCan</a> (uint8_t *data, size_t byteCount)</td></tr>
<tr class="memdesc:a743674752ab0e01437d0641cc7fcb589"><td class="mdescLeft">&#160;</td><td class="mdescRight">read via Can <br /></td></tr>
<tr class="separator:a743674752ab0e01437d0641cc7fcb589"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae8ba5003c7fd2a03b04301fc07a9cf9c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae8ba5003c7fd2a03b04301fc07a9cf9c"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classblfwk_1_1_bus_pal.html#ae8ba5003c7fd2a03b04301fc07a9cf9c">readSpiActual</a> (uint8_t *data, size_t byteCount)</td></tr>
<tr class="memdesc:ae8ba5003c7fd2a03b04301fc07a9cf9c"><td class="mdescLeft">&#160;</td><td class="mdescRight">worker function to actually read SPI data <br /></td></tr>
<tr class="separator:ae8ba5003c7fd2a03b04301fc07a9cf9c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af1ed47d490765718ff13a7d47b75ba07"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af1ed47d490765718ff13a7d47b75ba07"></a>
virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classblfwk_1_1_bus_pal.html#af1ed47d490765718ff13a7d47b75ba07">readI2c</a> (uint8_t *data, size_t byteCount)</td></tr>
<tr class="memdesc:af1ed47d490765718ff13a7d47b75ba07"><td class="mdescLeft">&#160;</td><td class="mdescRight">read via I2c <br /></td></tr>
<tr class="separator:af1ed47d490765718ff13a7d47b75ba07"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a694e8d6998debc6441db0f529f0695b9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a694e8d6998debc6441db0f529f0695b9"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classblfwk_1_1_bus_pal.html#a694e8d6998debc6441db0f529f0695b9">buspal_serial_read</a> (uint8_t *buf, int size, bool isCommandData=false)</td></tr>
<tr class="memdesc:a694e8d6998debc6441db0f529f0695b9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Overriden serial_read for logging. <br /></td></tr>
<tr class="separator:a694e8d6998debc6441db0f529f0695b9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4fe69d80560f5f5846ad8f60b267c7a8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4fe69d80560f5f5846ad8f60b267c7a8"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classblfwk_1_1_bus_pal.html#a4fe69d80560f5f5846ad8f60b267c7a8">buspal_serial_write</a> (uint8_t *buf, int size, bool isCommandData=false)</td></tr>
<tr class="memdesc:a4fe69d80560f5f5846ad8f60b267c7a8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Overriden serial_write for logging. <br /></td></tr>
<tr class="separator:a4fe69d80560f5f5846ad8f60b267c7a8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aedd9bbc9cfbd8de989a343e347484dc9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aedd9bbc9cfbd8de989a343e347484dc9"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classblfwk_1_1_bus_pal.html#aedd9bbc9cfbd8de989a343e347484dc9">flushRX</a> ()</td></tr>
<tr class="memdesc:aedd9bbc9cfbd8de989a343e347484dc9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Flushes the serial port of any RX data. <br /></td></tr>
<tr class="separator:aedd9bbc9cfbd8de989a343e347484dc9"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-attribs"></a>
Protected Attributes</h2></td></tr>
<tr class="memitem:a64ec858c7bff63cead7e75ed7b85474b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a64ec858c7bff63cead7e75ed7b85474b"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classblfwk_1_1_bus_pal.html#a64ec858c7bff63cead7e75ed7b85474b">m_fileDescriptor</a></td></tr>
<tr class="memdesc:a64ec858c7bff63cead7e75ed7b85474b"><td class="mdescLeft">&#160;</td><td class="mdescRight">PC COM port file descriptor. <br /></td></tr>
<tr class="separator:a64ec858c7bff63cead7e75ed7b85474b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5e8e7c2242731cf665f4c4f3e0fd8738"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5e8e7c2242731cf665f4c4f3e0fd8738"></a>
uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classblfwk_1_1_bus_pal.html#a5e8e7c2242731cf665f4c4f3e0fd8738">m_responseBuffer</a> [<a class="el" href="classblfwk_1_1_bus_pal.html#aa43dd896e2acb8e1955f3b13334c6b45a8c37ceeae90736301eb2e08999e4673a">kMaxResponse</a>]</td></tr>
<tr class="memdesc:a5e8e7c2242731cf665f4c4f3e0fd8738"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classblfwk_1_1_command.html" title="Represents a bootloader command. ">Command</a> response buffer. <br /></td></tr>
<tr class="separator:a5e8e7c2242731cf665f4c4f3e0fd8738"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a857e28324f403f0c4b1d038dbea087f3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a857e28324f403f0c4b1d038dbea087f3"></a>
bus_pal_mode_t&#160;</td><td class="memItemRight" valign="bottom"><b>m_mode</b></td></tr>
<tr class="separator:a857e28324f403f0c4b1d038dbea087f3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae7127f130e5b1578947526782cd73709"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae7127f130e5b1578947526782cd73709"></a>
unsigned int&#160;</td><td class="memItemRight" valign="bottom"><b>m_spiWriteByteCount</b></td></tr>
<tr class="separator:ae7127f130e5b1578947526782cd73709"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7f01edf2b202f8495ddadded63503541"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7f01edf2b202f8495ddadded63503541"></a>
unsigned int&#160;</td><td class="memItemRight" valign="bottom"><b>m_canWriteByteCount</b></td></tr>
<tr class="separator:a7f01edf2b202f8495ddadded63503541"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a660bcf08d94ef151f9e727c06d9f8207"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a660bcf08d94ef151f9e727c06d9f8207"></a>
unsigned int&#160;</td><td class="memItemRight" valign="bottom"><b>m_canFirstReadDelay</b></td></tr>
<tr class="separator:a660bcf08d94ef151f9e727c06d9f8207"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Interface with the <a class="el" href="classblfwk_1_1_bus_pal.html" title="Interface with the BusPal. ">BusPal</a>. </p>
<p>For hardware documentation, see <a href="http://dangerousprototypes.com/docs/Bus_Pirate">http://dangerousprototypes.com/docs/Bus_Pirate</a>. This class is based on the pyBusPirateLite python package, see <a href="http://dangerousprototypes.com/docs/Bus_Pirate_Scripting_in_Python">http://dangerousprototypes.com/docs/Bus_Pirate_Scripting_in_Python</a>. </p>
</div><h2 class="groupheader">Member Enumeration Documentation</h2>
<a class="anchor" id="aa43dd896e2acb8e1955f3b13334c6b45"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">anonymous enum</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Constants. </p>
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a class="anchor" id="aa43dd896e2acb8e1955f3b13334c6b45af7002ed146a52ee5ebfb5cbbdffd810b"></a>kResetCount&#160;</td><td class="fielddoc">
<p>Max number of nulls to send to enter BBIO mode. </p>
</td></tr>
<tr><td class="fieldname"><a class="anchor" id="aa43dd896e2acb8e1955f3b13334c6b45a66c5e62ec092e5eae464bab66c33f0b9"></a>kResponseOk&#160;</td><td class="fielddoc">
<p>Successful command response. </p>
</td></tr>
<tr><td class="fieldname"><a class="anchor" id="aa43dd896e2acb8e1955f3b13334c6b45aa61cccf9220c6dcb0f9de8e3423d5410"></a>kBulkTransferMax&#160;</td><td class="fielddoc">
<p>Max number of bytes per bulk transfer. </p>
</td></tr>
<tr><td class="fieldname"><a class="anchor" id="aa43dd896e2acb8e1955f3b13334c6b45a8c37ceeae90736301eb2e08999e4673a"></a>kMaxResponse&#160;</td><td class="fielddoc">
<p>Max number of bytes in command response, including bulk transfer response, plus some padding </p>
</td></tr>
</table>

</div>
</div>
<a class="anchor" id="ae0fcbb292f846c40a93219e55d92bc6c"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">enum <a class="el" href="classblfwk_1_1_bus_pal.html#ae0fcbb292f846c40a93219e55d92bc6c">blfwk::BusPal::spi_clock_phase_t</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>SPI clock phase configuration. </p>
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a class="anchor" id="ae0fcbb292f846c40a93219e55d92bc6cae26a39b485af1153f783d34913959713"></a>kSpiClockPhase_FirstEdge&#160;</td><td class="fielddoc">
<p>First edge on SPSCK occurs at the middle of the first cycle of a data transfer. </p>
</td></tr>
<tr><td class="fieldname"><a class="anchor" id="ae0fcbb292f846c40a93219e55d92bc6ca1dc5dce9b6cddaa8bbf040e3c27d3da0"></a>kSpiClockPhase_SecondEdge&#160;</td><td class="fielddoc">
<p>First edge on SPSCK occurs at the start of the first cycle of a data transfer. </p>
</td></tr>
</table>

</div>
</div>
<a class="anchor" id="a032b21d6ebbd41de467492fb047bfff8"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">enum <a class="el" href="classblfwk_1_1_bus_pal.html#a032b21d6ebbd41de467492fb047bfff8">blfwk::BusPal::spi_clock_polarity_t</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>SPI clock polarity configuration. </p>
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a class="anchor" id="a032b21d6ebbd41de467492fb047bfff8a3965e27705bde19475884d0dfdfc8c3b"></a>kSpiClockPolarity_ActiveHigh&#160;</td><td class="fielddoc">
<p>Active-high SPI clock (idles low). </p>
</td></tr>
<tr><td class="fieldname"><a class="anchor" id="a032b21d6ebbd41de467492fb047bfff8afc3d627662c90410e8b701172650c227"></a>kSpiClockPolarity_ActiveLow&#160;</td><td class="fielddoc">
<p>Active-low SPI clock (idles high). </p>
</td></tr>
</table>

</div>
</div>
<a class="anchor" id="a87f2962a35c81c8676f9138f2135ebc5"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">enum <a class="el" href="classblfwk_1_1_bus_pal.html#a87f2962a35c81c8676f9138f2135ebc5">blfwk::BusPal::spi_shift_direction_t</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>SPI data shifter direction options. </p>
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a class="anchor" id="a87f2962a35c81c8676f9138f2135ebc5a0c5f1ef4ac5e33e58596c158a4b0f849"></a>kSpiMsbFirst&#160;</td><td class="fielddoc">
<p>Data transfers start with most significant bit. </p>
</td></tr>
<tr><td class="fieldname"><a class="anchor" id="a87f2962a35c81c8676f9138f2135ebc5aaea748b5335c4c043431163582f24876"></a>kSpiLsbFirst&#160;</td><td class="fielddoc">
<p>Data transfers start with least significant bit. </p>
</td></tr>
</table>

</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a class="anchor" id="a1b64499874571024bf75d9bfececc04a"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">bool BusPal::enterBitBangMode </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Enter bit bang (binary scripting) mode. </p>
<p><a class="el" href="classblfwk_1_1_call.html" title="Represents the bootloader Call command. ">Call</a> this first before entering other peripheral modes. </p>

</div>
</div>
<a class="anchor" id="adaf957021ced27d998b8c579e7e6de00"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">uint8_t * BusPal::response </td>
          <td>(</td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>byteCount</em> = <code>1</code></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Read response. </p>
<dl class="retval"><dt>Return values</dt><dd>
  <table class="retval">
    <tr><td class="paramname">NULL</td><td>No response from device </td></tr>
    <tr><td class="paramname">Non-NULL</td><td>Pointer to internal array of bytes at least size byteCount </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li><a class="el" href="_bus_pal_8h_source.html">BusPal.h</a></li>
<li>BusPal.cpp</li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><b>blfwk</b></li><li class="navelem"><a class="el" href="classblfwk_1_1_bus_pal.html">BusPal</a></li>
    <li class="footer">Generated on Mon Mar 7 2016 16:49:51 for Kinetis Bootloader Host by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.11 </li>
  </ul>
</div>
</body>
</html>
